#ifndef WORLDZONE_H_
#define WORLDZONE_H_

enum ZONE_TYPE { ZONE_NULL = -1, ZONE_MOUNTAIN = 0, ZONE_PLAINS, ZONE_WATER, ZONE_FOREST, ZONE_DESERT, ZONE_MAX };
enum MAP_DIRECTION { NORTH = 1, SOUTH = 2, EAST = 3, WEST = 4 };

#include "../../Generic/DList.h"

class Zone
{
private:
	// PieceType is a generic number system used to verify the location type the piece is.
	// this can be used for multiple things, such as finding out what is north of the players current location.
	// will need to use this variable to determine a few basic things later on for the more random pieces.
	// note to self, will need to aling barriers for the world to not go past as far as stuff like a castle. Cant have it extending out far past the entrence.
	// will need to set up a basic system that the number will follow. will set that up as a public function known as WorldTypeFinder.
	
	// Zone ID
	int			m_ZoneID;
	int			m_ZonePositionX;
	int			m_ZonePositionY;
	// Zone type
	int			m_ZoneType;
	
	// Neighoring zones
	Zone*		m_NeighborNorth;
	Zone*		m_NeighborSouth;
	Zone*		m_NeighborEast;
	Zone*		m_NeighborWest;

	// either I am tired, or I am losing my mind... having trouble thinking what functions I will need, and what they have to do. may need to call it a night... so tired...
	// need to make the PiecePos ints find out what they have to be. new thought: the first peice will have to, at least for testing, be a generic piece; say a field...
	// sadly wont be able to make a visable map for the player. may need to make a map item, but one that results in text to lead the player to the marked destination... may result in a map from each 'quest.'
	


public:
	Zone(void);
	~Zone(void);

	bool		CheckNeighbor(int direction, int zoneType = 0);

	// Accessors
	// Minimal inline, will minimize rebuilds
	int			GetZoneID(void);
	int			GetZoneType(void);
	Zone*		GetZoneNeighbor(int direction);
	int			GetZoneX(void);
	int			GetZoneY(void);

	// Mutators
	void		SetZoneID(int id);
	void		SetZoneType(int type);
	void		SetNeighbor(Zone* zone, int direction);
	void		SetZoneX(int x);
	void		SetZoneY(int y);
};

#endif